package com.yhy.apiconsumer.config;

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ReferenceConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.yhy.device.interfaces.IDeviceService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * describe:
 *
 * @author helloworldyu
 * @date 2019/1/19
 */
@Configuration
public class Beans {

	@Bean
	IDeviceService getDeviceService(){
		// 当前应用配置
		ApplicationConfig application = new ApplicationConfig();
		application.setName("api_consumer");

		// 连接注册中心配置
		RegistryConfig registry = new RegistryConfig();
		registry.setProtocol("zookeeper");
		registry.setAddress("ucc.tuya.com:2181");

		// 注意：ReferenceConfig为重对象，内部封装了与注册中心的连接，以及与服务提供方的连接
		// 引用远程服务
		// 此实例很重，封装了与注册中心的连接以及与提供者的连接，请自行缓存，否则可能造成内存和连接泄漏
		ReferenceConfig<IDeviceService> reference = new ReferenceConfig<>();
		reference.setApplication(application);
		// 多个注册中心可以用setRegistries()
		reference.setRegistry(registry);
		reference.setInterface(IDeviceService.class);
		reference.setVersion("1.0");

		// 和本地bean一样使用xxxService
		// 注意：此代理对象内部封装了所有通讯细节，对象较重，请缓存复用
		return reference.get();
	}
}